Apache Commons IO লাইব্রেরি ফাইলের তুলনা (comparison) করার জন্য শক্তিশালী টুল সরবরাহ করে। ফাইলের মধ্যে বিভিন্ন ধরনের তুলনা করা যেতে পারে, যেমন ফাইলের কন্টেন্ট তুলনা, ফাইলের আকার তুলনা, বা ফাইলের মেটাডেটা তুলনা। এই পোস্টে, আমরা Apache Commons IO ব্যবহার করে multiple file comparison techniques নিয়ে আলোচনা করব।
FileUtils.contentEquals()
মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়। এটি দুটি ফাইলের কন্টেন্ট একে অপরের সাথে তুলনা করে, এবং যদি উভয় ফাইলের কন্টেন্ট একেবারে একরকম হয়, তাহলে এটি true রিটার্ন করবে।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileComparisonExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইল কন্টেন্ট তুলনা
boolean isEqual = FileUtils.contentEquals(file1, file2);
if (isEqual) {
System.out.println("ফাইলের কন্টেন্ট একই!");
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtils.contentEquals(file1, file2)
: দুটি ফাইলের কন্টেন্ট তুলনা করে। যদি দুটি ফাইলের কন্টেন্ট একরকম হয়, এটি true রিটার্ন করবে, অন্যথায় false।ফাইলের কন্টেন্ট একই!
ফাইলের আকার তুলনা করতে FileUtils.sizeOf() মেথডটি ব্যবহার করা যেতে পারে। এটি একটি ফাইলের আকার (size) বাইটস (bytes) হিসেবে রিটার্ন করে। ফাইলের আকার তুলনা করে ফাইল দুটি একই আকারের কিনা তা যাচাই করা যায়।
import org.apache.commons.io.FileUtils;
import java.io.File;
public class FileSizeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইল আকার তুলনা
long fileSize1 = FileUtils.sizeOf(file1);
long fileSize2 = FileUtils.sizeOf(file2);
if (fileSize1 == fileSize2) {
System.out.println("ফাইলের আকার সমান!");
} else {
System.out.println("ফাইলের আকার আলাদা!");
}
}
}
FileUtils.sizeOf(file)
মেথডটি একটি ফাইলের আকার বাইটস হিসেবে রিটার্ন করে।ফাইলের আকার সমান!
FileUtils.isFileOlder()
মেথডটি দুটি ফাইলের মধ্যে কোন ফাইলের বয়স (modification time) বেশি তা তুলনা করতে ব্যবহৃত হয়। এটি একটি ফাইলের সংশোধিত সময় এবং অন্য ফাইলের সংশোধিত সময়ের তুলনা করে বলে দেয় কোনটি পুরানো।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileAgeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইলের বয়স তুলনা
boolean isFile1Older = FileUtils.isFileOlder(file1, file2);
if (isFile1Older) {
System.out.println("file1.txt পুরানো!");
} else {
System.out.println("file2.txt পুরানো!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtils.isFileOlder(file1, file2)
: এটি দুটি ফাইলের সংশোধিত সময় (modification time) তুলনা করে।file1
পুরানো হয়, তাহলে true রিটার্ন করবে, অন্যথায় false।file1.txt পুরানো!
FileUtils.directoryContains()
মেথডটি ব্যবহার করে আপনি দুটি ডিরেক্টরির মধ্যে তুলনা করতে পারেন। এটি চেক করে যে একটি ডিরেক্টরি অন্য ডিরেক্টরির মধ্যে অন্তর্ভুক্ত (contains) কি না।
import org.apache.commons.io.FileUtils;
import java.io.File;
public class DirectoryComparison {
public static void main(String[] args) {
File directory1 = new File("dir1");
File directory2 = new File("dir2");
// ডিরেক্টরি তুলনা
boolean isContained = FileUtils.directoryContains(directory1, directory2);
if (isContained) {
System.out.println("dir2 dir1 এর মধ্যে রয়েছে!");
} else {
System.out.println("dir2 dir1 এর মধ্যে নেই!");
}
}
}
FileUtils.directoryContains(directory1, directory2)
: এটি চেক করে যে directory2
কি directory1
এর মধ্যে রয়েছে।true
রিটার্ন করলে, directory2
directory1
এর মধ্যে থাকবে।dir2 dir1 এর মধ্যে রয়েছে!
ফাইলের কন্টেন্ট তুলনা করার জন্য আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করতে পারেন। ফাইলের হ্যাশ তৈরি করে আপনি তাদের কন্টেন্ট তুলনা করতে পারেন। এটি ফাইলের কন্টেন্ট সম্পূর্ণভাবে তুলনা করার জন্য অত্যন্ত কার্যকরী পদ্ধতি।
import org.apache.commons.io.FileUtils;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.File;
import java.io.IOException;
public class FileHashComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// MD5 হ্যাশ তৈরি করা
String file1Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file1));
String file2Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file2));
if (file1Hash.equals(file2Hash)) {
System.out.println("ফাইলের কন্টেন্ট এক!" );
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!" );
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
DigestUtils.md5Hex()
: এটি একটি ফাইলের MD5 হ্যাশ তৈরি করে।FileUtils.readFileToByteArray(file)
: এটি ফাইলটিকে byte array এ রূপান্তরিত করে এবং পরে MD5 হ্যাশ তৈরী করতে সাহায্য করে।ফাইলের কন্টেন্ট এক!
Apache Commons IO লাইব্রেরি ফাইল তুলনা করার জন্য বেশ কিছু শক্তিশালী পদ্ধতি সরবরাহ করে। আপনি FileUtils.contentEquals(), FileUtils.sizeOf(), FileUtils.isFileOlder() ইত্যাদি ব্যবহার করে ফাইলের কন্টেন্ট, আকার, বয়স এবং অন্যান্য বৈশিষ্ট্যের তুলনা করতে পারেন। এছাড়াও, আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করে ফাইলের কন্টেন্ট তুলনা করতে পারেন, যা কার্যকরী এবং নির্ভুল ফলাফল দেয়। Apache Commons IO লাইব্রেরি ফাইল ম্যানিপুলেশন এবং তুলনা করার জন্য একটি খুবই কার্যকরী টুল।
common.read_more